// 简易版本的promiseAll
Promise.prototype.all = function (promises) {
  let result = [];
  return new Promise(function (resolve, reject) {
    for (let item of promises) {
      item.then(res => {
        result.push(res)
      })
    }
    resolve(result)
  })
}

// promise all 的输入不一定是 promise， 第二如果遇到错误应该直接返回 

Promise.alldiy = function(promises) {
  let results = [];
  return new Promise(function(resolve, reject) {
    for (let i = 0; i < promises.length; i++) { // 使用let保证promise顺序执行
      if (isPromise(promises[i])) {
        Promise.resolve(promises[i]).then(function (res) {
          results[i] = res;
          // 当所有函数都正确执行了，resolve输出所有返回结果。
          resolve(results);
        }, function (err) {
          reject(err);
        });
      } else {
        results[i] = promises[i]
      }
    }
  });
};

// promise race 的实现

Promise.race = function (promises) {
  return new Promise(function (resolve, reject) {
    for (let i = 0; i < promises.length; i++) {
      promises[i].then((res) => {
        resolve(res)
      }, function (err) {
        reject(err)
      })
    }
  })
}